<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 也是就近原则
        let sex = '男';
        function fn(){
            let sex = '未知';
            sex = '女';//当前作用域存在就修改自己作用域下的变量
            console.log(sex);
        }
        fn();
        console.log(sex);
        // 自己不存在上级
        let nickname = '旺财';
        function fn2(){
            // 当前作用域没有这个变量 找到上级作用域 进行修改
            nickname = '来福';
        }
        fn2();
        console.log(nickname);
        // 
        let mobile = '119'
        function fn3(){
            function fn4(){
                // 当前作用域不存在 上级也不存在 上上级存在 就将上上级的 变量进行修改
                mobile = 120;
            }
            fn4();
        }
        fn3();
        console.log(mobile);
        // 修改变量 当前作用域找不到 上级作用域寻找，找到了就使用没有继续向上 如果到window作用域都找不到 就在window下创建这个变量 并且修改
        function fn5(){
            email = '111@qq.com';
        }
        
        fn5();
        console.log(email)



        // 块级作用域  只要在{}中间所创建的变量就是块级作用域 一样是遵守作用域的规则
        {
            let a = 20;
            console.log(a);
            {
                let b = 30
            }
            console.log(b)
        }
        
    </script>
</body>
</html>